This invention relates generally to communication and data transfer between operating systems and, more particularly, relates to a system and method for transferring data between operating systems involving an abstraction layer.
Continued advances in computer technology have lead to not only increased performance, but also increased performance expectations by the users of such computer equipment. These increased user expectations extend not only to processing capability, but also to all aspects and peripheral equipment associated with a home or business computing environment. The industry has responded with increased speed for CD ROM drives, communication modems, faster video and audio cards, and even faster processors. However, these advances in performance also increased the computational tasks the computer""s operating system is required to perform to allow users to take the full advantage of these performance enhancements.
For example, in areas such as multimedia and audio compression, a technique known as streaming was developed for transferring data so that it can be processed as a steady and continuous stream. Streaming technologies are becoming increasingly important with the growth of the Internet because most users do not have fast enough access to download large multimedia files quickly. With streaming, the data can start to be displayed before the entire file has been transmitted. For streaming to work, the data must be processed as a steady stream and converted to audio or video. If the data isn""t processed quickly enough, however, the presentation of the data will not be smooth. The processing of this data requires a large number of computations that can load down the computer""s operating system, consume a significant amount of the computer""s resources, and incur additional latency. These effects degrade performance.
In response, the industry developed operating systems designed specifically to perform these types of computational heavy tasks in order to free up the computer""s resources and reduce latency. The digital signal processor (DSP) is the most prevalent type of processor designed to perform these tasks. It is recognized that DSPs can be used in areas such as video cards, audio cards, telecommunication devices, automotive applications, industrial applications, and any other application where an electronic controller is used. Many of these DSPs are installed as add-ons to a computer. As new advancements and improvements are made, these DSPs are readily changed to handle the computations necessary to support the advancements and improvements. However, it was soon realized that DSPs introduced a new problem in that DSPs have to communicate with the computer""s operating system efficiently to move the data from the computer""s operating system down to the DSP to allow the DSP to perform the computations and then send it back to the computer operating system or on to another device.
One prior solution that overcomes the communication problem is where each DSP developed its own interface to the computer""s operating system that is specific to the DSP""s particular operating system. However, while this particular interface is acceptable for that particular DSP, such an interface generally cannot be used with any other DSP as the interface is specific to features of that particular DSP. This required that multiple interfaces be developed, one for each type of DSP.
Another solution to the communication problem is the computer operating system providing a fixed driver for the DSP to communicate with the computer operating system. Since the fixed driver may not address all of the functions available through the DSP, this results in limiting the functionality of the DSP to the particular functions provided by the driver. This does not allow users to take advantage of the full capabilities of the DSP. Furthermore, as new features are added to the DSP, the fixed driver cannot support them and new drivers must be created.
There therefore exists a need in the art for a system and method that allows different types of operating systems to communicate with each other that can be generalized for all types of operating systems without limiting the capability of either operating system.
In view of the above described problems existing in the art, the present invention provides an interface of a computer operating system to enable other operating systems to communicate with the host computer operating system. This interface provides an abstraction layer of a first operating system for DSPs and other operating systems to communicate with the first operating system. Each operating system does not need to know every command of the other operating system. The interface provides basic communication commands for operating systems to use and provides the flexibility to add operating system specific parameters to the basic communication commands to allow additional functionality. In one embodiment, one of the operating systems abstracts the other operating system as a bus transport.
The interface enables control channels and data channels to be created to allow data to be passed between the operating systems without having to convert the data into another format. The control channel is used for exchanging control related messages and the data channel is used for transferring data and messages between the operating systems. The interface allows dynamic loading and unloading of tasks on the DSP to enable new tasks to be distributed and used on the DSP.
Additional features and advantages of the invention will be made apparent from the following detailed description of illustrative embodiments that proceeds with reference to the accompanying figures.